snapshot: Preallocate and don't memset the state stack
authorAlexander Larsson <alexl@redhat.com>
Tue, 29 Sep 2020 14:03:06 +0000 (16:03 +0200)
committerAlexander Larsson <alexl@redhat.com>
Tue, 29 Sep 2020 14:03:06 +0000 (16:03 +0200)
Most of the time the snapshot is less than 16 levels deep (did some testing
in gtk-demo), so lets pre-allocate 16 levels of state stack to avoid the
extra allocation most of the time.

gtk/gtksnapshot.c

index ab19aa8ac19fc82b1080748462a304b3b201c8b3..bca48076cd8c61e6f7dcee453e3338021923cc9a 100644 (file)
@@ -132,6 +132,8 @@ static void gtk_snapshot_state_clear (GtkSnapshotState *state);
 #define GDK_ARRAY_ELEMENT_TYPE GtkSnapshotState
 #define GDK_ARRAY_FREE_FUNC gtk_snapshot_state_clear
 #define GDK_ARRAY_BY_VALUE 1
+#define GDK_ARRAY_PREALLOC 16
+#define GDK_ARRAY_NO_MEMSET 1
 #include "gdk/gdkarrayimpl.c"
 
 /* This is a nasty little hack. We typedef GtkSnapshot to the fake object GdkSnapshot